(function(winn, document, Date, t) {
    function u(a, b) {
        n && n.count && n.count("aui:" + a, 0 === b ? 0 : b || (n.count("aui:" + a) || 0) + 1)
    }

    // 验证ua
    function checkUserAgent(pattern) {
        try {
            return pattern.test(navigator.userAgent)
        } catch (error) {
            return !1
        }
    }

    // 添加on事件
    //v(d, "error", e);
    function addElementEventListener(element, eventName, callback) {
        element.addEventListener ? element.addEventListener(eventName, callback, !1) : element.attachEvent && element.attachEvent("on" + eventName, callback)
    }

    function q(a, b, c, e) {
        b = b && c ? b + a + c : b || c;
        return e ? q(a, b, e) : b
    }

    function y(a, b, c) {
        try {
            Object.defineProperty(a, b, {
                value: c,
                writable: !1
            })
        } catch (e) {
            a[b] = c
        }
        return c
    }

    function I() {
        return setTimeout(U, 0)
    }

    function ja(a, b) {
        var c = a.length,
            e = c,
            g = function() {
                e-- || (J.push(b), K || (I(), K = !0))
            };
        for (g(); c--;) V[a[c]] ? g() : (w[a[c]] = w[a[c]] || []).push(g)
    }

    //创建js, src = https://images-na.ssl-images-amazon.com/images/G/01/AUIClients/ClientSideMetricsAUIJavascript-69ab801358dfe32338d0619802ae6aabc188b1bd._V2_.js
    function dynamicCreateLink(type, src, c, callback, g) {
        var element = document.createElement(type ? "script" : "link");
        v(element, "error", callback);
        g && v(element, "load", g);
        if (type) {
            element.type = "text/javascript";
            element.async = !0;
            if (type = c) type = -1 !== src.indexOf("images/I") || /AUIClients/.test(src);
            type && element.setAttribute("crossorigin", "anonymous");
            element.src = src
        } else element.rel = "stylesheet", element.href = src;
        document.getElementsByTagName("head")[0].appendChild(element)
    }

    function W(a, type) {
        return function(src, e) {
            function g() {
                dynamicCreateLink(type, src, d, function(b) {
                    L ?
                        u("resource_unload") : d ? (d = !1, u("resource_retry"), g()) : (u("resource_error"), a.log("Asset failed to load: " + src));
                    b && b.stopPropagation ? b.stopPropagation() : winn.event && (winn.event.cancelBubble = !0)
                }, e)
            }

            if (X[src]) return !1;
            X[src] = !0;
            u("resource_count");
            var d = !0;
            return !g()
        }
    }

    function la(a, b, c) {
        for (var e = {
            name: a,
            guard: function(c) {
                return b.guardFatal(a, c)
            },
            logError: function(c, d, e) {
                b.logError(c, d, e, a)
            }
        }, g = [], d = 0; d < c.length; d++) z.hasOwnProperty(c[d]) && (g[d] = M.hasOwnProperty(c[d]) ? M[c[d]](z[c[d]], e) : z[c[d]]);
        return g
    }

    function x(a,
               b, c, e, g) {
        return function(d, h) {
            function l() {
                var a = null;
                e ? a = h : "function" === typeof h && (p.start = N(), a = h.apply(winn, la(d, k, m)), p.end = N());
                if (b) {
                    z[d] = a;
                    a = d;
                    for (V[a] = !0;
                         (w[a] || []).length;) w[a].shift()();
                    delete w[a]
                }
                p.done = !0
            }

            var k = g || this;
            "function" === typeof d && (h = d, d = void 0);
            b && (d = (d || "__NONAME__").replace(/^prv:/, ""), O.hasOwnProperty(d) && k.error(q(", reregistered by ", q(" by ", d + " already registered", O[d]), k.attribution), d), O[d] = k.attribution);
            for (var m = [], n = 0; n < a.length; n++) m[n] = a[n].replace(/^prv:/, "");
            var p = Y[d || "anon" + ++ma] = {
                depend: m,
                registered: N(),
                namespace: k.namespace
            };
            c ? l() : ja(m, k.guardFatal(d, l));
            return {
                decorate: function(a) {
                    M[d] = k.guardFatal(d, a)
                }
            }
        }
    }

    function Z(a) {
        return function() {
            return {
                execute: x(arguments, !1, a, !1, this),
                register: x(arguments, !0, a, !1, this)
            }
        }
    }

    function aa(a) {
        return function(b, c) {
            c || (c = b, b = void 0);
            var e = this.attribution;
            return function() {
                A.push({
                    attribution: e,
                    name: b,
                    logLevel: a
                });
                var g = c.apply(this, arguments);
                A.pop();
                return g
            }
        }
    }

    function B(a, b) {
        this.load = {
            js: W(this, !0),
            css: W(this)
        };
        y(this, "namespace", b);
        y(this, "attribution", a)
    }

    function ba() {
        document.body ? m.trigger("a-bodyBegin") : setTimeout(ba, 20)
    }

    function C(a, b) {
        if (b) {
            for (var c = a.className.split(" "), e = c.length; e--;)
                if (c[e] === b) return;
            a.className += " " + b
        }
    }

    function ca(a, b) {
        for (var c = a.className.split(" "), e = [], g; void 0 !== (g = c.pop());) g && g !== b && e.push(g);
        a.className = e.join(" ")
    }

    function da(a) {
        try {
            return a()
        } catch (b) {
            return !1
        }
    }

    function D() {
        if (E) {
            var a = winn.innerWidth ? {
                w: winn.innerWidth,
                h: winn.innerHeight
            } : {
                w: k.clientWidth,
                h: k.clientHeight
            };
            5 < Math.abs(a.w -
                P.w) || 50 < a.h - P.h ? (P = a, Q = 4, (a = l.mobile || l.tablet ? 450 < a.w && a.w > a.h : 1250 <= a.w) ? C(k, "a-ws") : ca(k, "a-ws")) : Q-- && (ea = setTimeout(D, 16))
        }
    }

    function na(a) {
        (E = void 0 === a ? !E : !!a) && D()
    }

    function oa() {
        return E
    }

    "use strict";
    t = winn.AmazonUIPageJS || winn.P;
    var n = winn.ue;
    n && n.tag && (n.tag("aui"), n.tag("aui:aui_build_date:3.18.5-2018-04-12"));
    var F = Date.now = Date.now || function() {
            return +new Date
        },
        N = function(a) {
            return a && a.now ? a.now.bind(a) : F
        }(winn.performance),
        J = [],
        K = !1,
        U;
    U = function() {
        for (var a = I(), b = F(); J.length;)
            if (J.shift()(), 50 < F() - b) return;
        clearTimeout(a);
        K = !1
    };
    checkUserAgent(/OS 6_[0-9]+ like Mac OS X/i) && v(winn, "scroll", I);
    var V = {},
        w = {},
        X = {},
        L = !1;
    v(winn, "beforeunload", function() {
        L = !0;
        setTimeout(function() {
            L = !1
        }, 1E4)
    });
    var O = {},
        z = {},
        M = {},
        Y = {},
        ma = 0,
        R, A = [],
        fa = winn.onerror;
    winn.onerror = function(a, b, c, e, g) {
        g && "object" === typeof g || (g = Error(a, b, c), g.columnNumber = e, g.stack = b || c || e ? q(String.fromCharCode(92), g.message, "at " + q(":", b, c, e)) : void 0);
        var d = A.pop() || {};
        g.attribution = q(":", g.attribution || d.attribution, d.name);
        g.logLevel = d.logLevel;
        g.attribution && console &&
        console.log && console.log([g.logLevel || "ERROR", a, "thrown by", g.attribution].join(" "));
        A = [];
        fa && (d = [].slice.call(arguments), d[4] = g, fa.apply(winn, d))
    };
    B.prototype = {
        logError: function(a, b, c, e) {
            b = {
                message: b,
                logLevel: c || "ERROR",
                attribution: q(":", this.attribution, e)
            };
            if (winn.ueLogError) return winn.ueLogError(a || b, a ? b : null), !0;
            console && console.error && (console.log(b), console.error(a));
            return !1
        },
        error: function(a, b, c, e) {
            a = Error(q(":", e, a, c));
            a.attribution = q(":", this.attribution, b);
            throw a;
        },
        guardError: aa(),
        guardFatal: aa("FATAL"),
        log: function(a, b, c) {
            return this.logError(null, a, b, c)
        },
        declare: x([], !0, !0, !0),
        register: x([], !0),
        execute: x([]),
        AUI_BUILD_DATE: "3.18.5-2018-04-12",
        when: Z(),
        now: Z(!0),
        trigger: function(a, b, c) {
            var e = F();
            this.declare(a, {
                data: b,
                pageElapsedTime: e - (winn.aPageStart || NaN),
                triggerTime: e
            });
            c && c.instrument && R.when("prv:a-logTrigger").execute(function(b) {
                b(a)
            })
        },
        handleTriggers: function() {
            this.log("handleTriggers deprecated")
        },
        attributeErrors: function(a) {
            return new B(a)
        },
        _namespace: function(a, b) {
            return new B(a, b)
        }
    };
    var m = y(winn, "AmazonUIPageJS", new B);
    R = m._namespace("PageJS", "AmazonUI");
    R.declare("prv:p-debug", Y);
    m.declare("p-recorder-events", []);
    m.declare("p-recorder-stop", function() {});
    y(winn, "P", m);
    ba();
    if (document.addEventListener) {
        var ga;
        document.addEventListener("DOMContentLoaded", ga = function() {
            m.trigger("a-domready");
            document.removeEventListener("DOMContentLoaded", ga, !1)
        }, !1)
    }
    var k = document.documentElement,
        S = function() {
            var a = ["O", "ms", "Moz", "Webkit"],
                b = document.createElement("div");
            return {
                testGradients: function() {
                    b.style.cssText = ("background-image:-webkit-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:" +
                        a.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0, -17);
                    return -1 < b.style.backgroundImage.indexOf("gradient")
                },
                test: function(c) {
                    var e = c.charAt(0).toUpperCase() + c.substr(1);
                    c = (a.join(e + " ") + e + " " + c).split(" ");
                    for (e = c.length; e--;)
                        if ("" === b.style[c[e]]) return !0;
                    return !1
                },
                testTransform3d: function() {
                    var a = !1;
                    winn.matchMedia && (a = winn.matchMedia("(-webkit-transform-3d)").matches);
                    return a
                }
            }
        }();
    t = k.className;
    var ha = /(^| )a-mobile( |$)/.test(t),
        ia = /(^| )a-tablet( |$)/.test(t),
        l = {
            audio: function() {
                return !!document.createElement("audio").canPlayType
            },
            video: function() {
                return !!document.createElement("video").canPlayType
            },
            canvas: function() {
                return !!document.createElement("canvas").getContext
            },
            svg: function() {
                return !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect
            },
            offline: function() {
                return navigator.hasOwnProperty && navigator.hasOwnProperty("onLine") && navigator.onLine
            },
            dragDrop: function() {
                return "draggable" in document.createElement("span")
            },
            geolocation: function() {
                return !!navigator.geolocation
            },
            history: function() {
                return !(!winn.history ||
                    !winn.history.pushState)
            },
            webworker: function() {
                return !!winn.Worker
            },
            autofocus: function() {
                return "autofocus" in document.createElement("input")
            },
            inputPlaceholder: function() {
                return "placeholder" in document.createElement("input")
            },
            textareaPlaceholder: function() {
                return "placeholder" in document.createElement("textarea")
            },
            localStorage: function() {
                return "localStorage" in winn && null !== winn.localStorage
            },
            orientation: function() {
                return "orientation" in winn
            },
            touch: function() {
                return "ontouchend" in document
            },
            gradients: function() {
                return S.testGradients()
            },
            hires: function() {
                var a =
                    winn.devicePixelRatio && 1.5 <= winn.devicePixelRatio || winn.matchMedia && winn.matchMedia("(min-resolution:144dpi)").matches;
                u("hiRes" + (ha ? "Mobile" : ia ? "Tablet" : "Desktop"), a ? 1 : 0);
                return a
            },
            transform3d: function() {
                return S.testTransform3d()
            },
            touchScrolling: function() {
                return checkUserAgent(/Windowshop|android.([3-9]|[L-Z])|OS ([5-9]|[1-9][0-9]+)(_[0-9]{1,2})+ like Mac OS X|Chrome|Silk|Firefox|Trident.+?; Touch/i)
            },
            ios: function() {
                return checkUserAgent(/OS [1-9][0-9]*(_[0-9]*)+ like Mac OS X/i) && !checkUserAgent(/trident|Edge/i)
            },
            android: function() {
                return checkUserAgent(/android.([1-9]|[L-Z])/i) &&
                    !checkUserAgent(/trident|Edge/i)
            },
            mobile: function() {
                return ha
            },
            tablet: function() {
                return ia
            }
        },
        r;
    for (r in l) l.hasOwnProperty(r) && (l[r] = da(l[r]));
    for (var T = "textShadow textStroke boxShadow borderRadius borderImage opacity transform transition".split(" "), G = 0; G < T.length; G++) l[T[G]] = da(function() {
        return S.test(T[G])
    });
    var E = !0,
        ea = 0,
        P = {
            w: 0,
            h: 0
        },
        Q = 4;
    D();
    v(winn, "resize", function() {
        clearTimeout(ea);
        Q = 4;
        D()
    });
    var pa = {
        getItem: function(a) {
            try {
                return winn.localStorage.getItem(a)
            } catch (b) {}
        },
        setItem: function(a, b) {
            try {
                return winn.localStorage.setItem(a,
                    b)
            } catch (c) {}
        }
    };
    ca(k, "a-no-js");
    C(k, "a-js");
    !checkUserAgent(/OS [1-8](_[0-9]*)+ like Mac OS X/i) || winn.navigator.standalone || checkUserAgent(/safari/i) || C(k, "a-ember");
    t = [];
    for (r in l) l.hasOwnProperty(r) && l[r] && t.push("a-" + r.replace(/([A-Z])/g, function(a) {
        return "-" + a.toLowerCase()
    }));
    C(k, t.join(" "));
    k.setAttribute("data-aui-build-date", "3.18.5-2018-04-12");
    m.register("p-detect", function() {
        return {
            capabilities: l,
            localStorage: l.localStorage && pa,
            toggleResponsiveGrid: na,
            responsiveGridEnabled: oa
        }
    });
    m.declare("a-event-revised-handling", !1);
    m.declare("a-fix-event-off", !1)
})(window, document, Date);






(function(wd, doc, _OQ) {

    "use strict";

    window.wd = wd;

    if (!wd.__fwcimLoaded) {
        wd.__fwcimLoaded = true;
        var page = wd.AmazonUIPageJS || wd.P;
        var _oO;
        wd.fwcim = {
            useMercury: function (_ll) {
                _oO = _ll;
            },
            profile: function (_S$) {
                if (!wd.__fwcimShimProfileReady) {
                    wd.__fwcimShimProfileReady = true;
                    page.declare("fwcim-profiler-shim-ready", {
                        mercuryLocation: _oO,
                        formSelector: _S$
                    });
                }
            },
            profileForm: function (_lL) {
                page.when("fwcim-profiler").execute("fwcim-profile-" + new Date().getTime(), function (_1l) {
                    _1l.profile(_lL, _oO);
                });
            },
            report: function (_zZ, _$S) {
                if (typeof _$S !== "function") {
                    throw new Error("You must specify a callback for the report method.");
                }

                page.when("fwcim-profiler").execute("fwcim-report-" + new Date().getTime() + Math.random(), function (_LiL) {
                    try {
                        var _0O0 = _LiL.reportForm(_zZ);
                        _$S(null, _0O0);
                    } catch (e) {
                        _$S(e);
                    }
                });
            }
        };

        // 检测是否支持下面属性
        /*
        audio:true
        borderImage:true
        borderRadius:true
        boxShadow:true
        geolocation:true
        localStorage:"supported"
        opacity:true
        textShadow:true
        touch:false
        transform:true
        transition:true
        video:true
        webWorker:true
        */
        page.now("A").execute("fwcim-register-fwcim-a", function (_LiI) {
            var _$2 = ["Webkit", "Moz", "ms", "khtml"];
            var _OO0 = ["textShadow", "boxShadow", "borderRadius", "borderImage", "opacity", "transform", "transform3d", "transition"];
            page.when("fwcim-zepto").register("fwcim-a", function (QQ) { // QQ 类似 Jquery的选择器
                var _QQQ = {};
                try {
                    _QQQ = {
                        audio: !!doc.createElement('audio').canPlayType, // true
                        geolocation: !!navigator.geolocation, // true
                        localStorage: !wd.localStorage ? wd.localStorage === _OQ ? "unsupported" : "disabled" : "supported", // supported
                        touch:"ontouchend" in wd, // false
                        video: !!doc.createElement("video").canPlayType, // true
                        webWorker: !!wd.Worker // true
                    };
                    var dkv = doc.createElement("div");
                    for (var i = 0; i < _OO0.length; i++) {
                        var _LI = _OO0[i];
                        var _iI = [_LI];
                        for (var j = 0; j < _$2.length; j++) {
                            _iI.push(_$2[j] + _LI.charAt(0).toUpperCase() + _LI.slice(1));
                        }
                        for (var j = 0; j < _iI.length; j++) {

                            if (dkv.style[_iI[j]] === '') {
                                _QQQ[_LI] = true;
                                break;
                            }
                        }
                    }
                } catch (e) {
                    console.debug("Capability detection failed in fwcim-a");
                }
                return {
                    $: QQ,
                    state: _LiI ? _LiI.state : function (_ss$) {
                        try {
                            var _$sSz = QQ("script[type='a-state'][data-a-state]");
                            if (!_$sSz || !_$sSz.length) {
                                return {};
                            }

                            for (var x = 0; x < _$sSz.length; x++) {
                                var _sSz = JSON.parse(QQ(_$sSz[x]).attr("data-a-state"));
                                if (typeof _sSz === "object" && _sSz.key && _ss$ == _sSz.key) {
                                    return JSON.parse(QQ(_$sSz[x]).html());
                                }
                            }
                        } catch (e) {
                            console.debug("Failed to get the A state.");
                        }
                        return {};
                    },
                    capabilities: _QQQ,
                    defer: _LiI ? _LiI.defer : function (_I1L) {
                        setTimeout(_I1L,0);
                    }
                };
            });
        });


        page.when("fwcim-zepto").execute("fwcim-detectReady", function (_lLl) {
            _lLl(function () {
                page.register("fwcim-ready");
                setTimeout(function () {
                    page.register("fwcim-afterLoad");
                }, 1500);
            });
        });



        page.when("fwcim-ready").execute("fwcim-profiler-shim-ex", function (_oo0, _ooO, _oo00) {
            var _Z2$ = _oo00.mercuryLocation,
                _22ZZ = _oo00.formSelector;
            if (!wd.__fwcimTests) {
                var _OOQ;
                if (!_22ZZ) {

                    var _S$s = ['changeAccountInformationForm'];
                    var _iii = /^ap_.+_form$/;
                    var _sZ = _oo0('form'); // $('form')
                    // 遍历form里面的input,checkbox等等元素
                    for (var _S2 = 0; _S2 < _sZ.length; _S2++) {
                        var _lLL = _sZ[_S2]; //元素1，2,3,4,5,6
                        var _IL = _oo0(_lLL).attr('id');
                        var _QO00 = _oo0(_lLL).attr('name');
                        if (_S$s.indexOf(_IL) != -1 || _S$s.indexOf(_QO00) != -1) {
                            _OOQ = _oo0(_lLL);
                            break;
                        }
                        if (_IL && _IL.match(_iii)) {
                            _OOQ = _oo0(_lLL);
                            break;
                        }
                    }
                } else {
                    _OOQ = _oo0("form[name='" + _22ZZ + "']");
                }
                var _1LI = "fwcim-form";
                var _ssz;
                if (_OOQ) {
                    _ssz = _OOQ;
                    _ssz.addClass(_1LI);
                }
                _ooO.profile("."+ _1LI, _Z2$);
            }
        });


        "use strict";
        page.declare("fwcim-extend-prototype", function (_$2s$2) {

            if (Object.hasOwnProperty("create")) {
                return Object.create(_$2s$2);
            } else {
                var _Li1il = function () {
                };
                _Li1il.prototype = _$2s$2;
                return new _Li1il();
            }
        });


        "use strict";
        // forEach
        page.declare("fwcim-each", function (_$$S2, _SZZ$) {
            if (_$$S2.hasOwnProperty('forEach')) {
                _$$S2.forEach(_SZZ$);
            } else {
                for (var _Iiii in _$$S2) {
                    _SZZ$.call(_$$S2, _$$S2[_Iiii], _Iiii);
                }
            }
        });

        //节流函数 Throttle
        page.register("fwcim-throttle", function () {
            return function (_0oQ0o, _Z$z$Z) {

                return function () {
                    if (new Date().getTime() - _Z$z$Z >= 0) {
                        _0oQ0o.apply(this, arguments);
                    }
                };
            };
        });

        //自己实现一个json
        page.register("fwcim-json" , function () {
            var _oOOoQ = Object.prototype.toString;
            var _Qo0o0 = Array.isArray || function (_ZzS2) {
                return _oOOoQ.call(_ZzS2) === "[object Array]";
            };
            var _11L1 = {
                "\"": "\"",
                '\x5c':"\\",
                '\x08': "\b",
                '\x0a': "\n",
                '\x0c': "\f",
                '\x0d': "\r",
                '\x09': "\t"
            };

            var _1IiIL = function (_0OOQ) {
                return _0OOQ.toString().replace(/[\\"\u0000-\u001F\u2028\u2029]/g, function (_OOO0o) {
                    return _11L1.hasOwnProperty(_OOO0o) ? _11L1[_OOO0o] : "\\u"+ (_OOO0o.charCodeAt(0) + 65536).toString(16).substring(1);
                });
            };
            var _Q0OQ0QQ = {
                stringify: function (_OoQOQ) {
                    var _1IIi = _Q0OQ0QQ.stringify;

                    if (_OoQOQ === null) {
                        return "null";
                    } else if (typeof _OoQOQ === "number") {

                        return _OoQOQ;
                    } else if (typeof _OoQOQ === "boolean") {
                        return _OoQOQ ? "true" : "false";
                    } else if (typeof _OoQOQ ==="object") {
                        if (_Qo0o0(_OoQOQ)) {
                            var _o0oOoo = [];
                            for (var _22S$ in _OoQOQ) {
                                if (_OoQOQ[_22S$] !== _OQ) {
                                    _o0oOoo.push(_1IIi(_OoQOQ[_22S$]));
                                }
                            }
                            return "[" + _o0oOoo.join(",") +"]";
                        } else {
                            var _o0oOoo = [];
                            for (var _IiLl in _OoQOQ) {
                                if (_OoQOQ.hasOwnProperty(_IiLl) && _OoQOQ[_IiLl] !== _OQ) {
                                    _o0oOoo.push("\"" + _1IiIL(_IiLl) + "\":"+ _1IIi(_OoQOQ[_IiLl]));
                                }
                            }

                            return "{"+ _o0oOoo.join(",") + "}";
                        }
                    } else if (_OoQOQ === _OQ) {

                        throw new Error("Undefined values cannot be stringified.");
                    } else {
                        return '"' + _1IiIL(_OoQOQ) + '"';
                    }
                },
                parse: wd.JSON.parse || function (_OQo0QO) {
                    return wd.eval("(" + _OQo0QO + ")");
                }
            };
            return _Q0OQ0QQ;
        });

        //实现is函数，判断什么浏览器
        page.register("fwcim-is", function () {
            return {
                ie: function () {
                    return !!navigator.userAgent.match(/MSIE [0-9.]+/i);
                },
                windows: function () {
                    return !!navigator.userAgent.match(/Windows/i);
                }
            };
        });
        
        "use strict";
        page.when("fwcim-collectors", "fwcim-encoding", "fwcim-json", "fwcim-zepto").register("fwcim-base-reporter", function (_z$22$S, _2$Ss, _ZzZs, _1iLI) {
            var _0oo0Q = "ECdITeCs";
            var _ZzZ$ = [1888420705,2576816180, 2347232058, 874813317];
            
            //XXTEA加密算法
            //https://www.cnblogs.com/movemoon/p/5633080.html
            function encryption(_LLlLL, _$szS$) {
                if (_LLlLL.length === 0) {
                    return '';
                }
                var _oQQO0 = Math.ceil(_LLlLL.length / 4);
                var _oOo0 = [];
                for (var _zzzs = 0; _zzzs < _oQQO0; _zzzs++) {
                    _oOo0[_zzzs] = (_LLlLL.charCodeAt(_zzzs * 4) & 255) + ((_LLlLL.charCodeAt(_zzzs * 4 + 1) & 255) << 8) + ((_LLlLL.charCodeAt(_zzzs * 4 + 2) & 255) << 16) + ((_LLlLL.charCodeAt(_zzzs * 4 +3) & 255) <<24);
                }
                var _1iLIi = 2654435769;
                var _1Lll = Math.floor(58 / _oQQO0);
                var _Oo0Qo = _oOo0[0];
                var _0Q00o = _oOo0[_oQQO0 - 1];
                var _o0ooO = 0;
                while (_1Lll-- > 0) {
                    _o0ooO += _1iLIi;

                    var _o0QQQo = _o0ooO >>> 2 &3;
                    for (var _OOQOo = 0; _OOQOo < _oQQO0; _OOQOo++) {
                        _Oo0Qo = _oOo0[(_OOQOo + 1) % _oQQO0];

                        _0Q00o = _oOo0[_OOQOo] += (_0Q00o >>>5 ^ _Oo0Qo << 2) + (_Oo0Qo >>>3 ^ _0Q00o << 4) ^ (_o0ooO ^ _Oo0Qo) + (_$szS$[_OOQOo &3 ^ _o0QQQo] ^ _0Q00o);
                    }
                }
                var _iILI = [];
                for (var _zzzs = 0; _zzzs < _oQQO0; _zzzs++) {

                    _iILI[_zzzs] = String.fromCharCode(_oOo0[_zzzs] & 255, _oOo0[_zzzs] >>> 8 & 255, _oOo0[_zzzs] >>> 16 & 255, _oOo0[_zzzs] >>>24 & 255);
                }
                return _iILI.join('');
            }

            var _lLIII = function (_00Qo) {
                this.__collectors = _lLIII.resolveCollectors(_00Qo);
            };
            _lLIII.resolveCollectors = function (_oQO0O, _SZS2) {
                _SZS2 = _SZS2 || {};
                return _1iLI.map(_oQO0O, function (_Z$zZ2) {
                    try {
                        if (typeof _Z$zZ2 === "string") {
                            var _oQooo = new _z$22$S[_Z$zZ2](_SZS2);
                            _oQooo.__name = _Z$zZ2;
                            return _oQooo;
                        } else if (Object.prototype.toString.call(_Z$zZ2) === "[object Array]") {

                            var _oQooo = new _z$22$S[_Z$zZ2[0]](_1iLI.extend(true, {}, _SZS2, _Z$zZ2[1]));
                            _oQooo.__name = _Z$zZ2[0];
                            return _oQooo;
                        } else {
                            return _Z$zZ2;
                        }
                    } catch (e) {

                        _lLIII.reportError("resolveCollectors", e);
                    }
                });
            };
            _lLIII.__container= _1iLI('<div class="fwcim-container"></div>');
            _1iLI(doc.body).append(_lLIII.__container);
            _lLIII.__errorCollector = new _z$22$S['fwcim-error-collector']();
            _lLIII.reportError = function (_Lll, _22SZ) {
                _lLIII.__errorCollector.log(_Lll, _22SZ);
            };
            _lLIII.__metricsCollector = new _z$22$S["fwcim-metrics-collector"]();
            _lLIII.DEFAULT_COLLECTORS = _lLIII.resolveCollectors([
                ["fwcim-instant-collector", {
                    key: "start"
                }],
                ["fwcim-element-telemetry-collect" + ("or"), {
                    key:'interaction',
                    el: doc
                }],"fwcim-local-storage-identifier-collector", 
                    "fwcim-timezone-collector", 
                    "fwcim-script-collector", 
                    "fwcim-plugin-collector", 
                    "fwcim-capability-collector", 
                    "fwcim-browser-collector", 
                    "fwcim-history-collector", 
                    "fwcim-gpu-collector",
                    "fwcim-battery-collector", 
                    "fwcim-dnt-collector", 
                    "fwcim-math-fingerprint-collector",
                    "fwcim-performance-collector", ["fwcim-timer-collector", {
                    key: "end"
                }]
            ], {
                container: _lLIII.__container
            });
            _lLIII.prototype.report = function () {
                var _s$s$ = {};
                _1iLI.each(this.__collectors, function (_0QO0oo, _oO0Q0) {
                    try {
                        var _ZzSs = new Date().getTime();
                        _1iLI.extend(true, _s$s$, _oO0Q0.collect());
                        _lLIII.__metricsCollector.recordTiming(_oO0Q0.__name|| 'unknown', new Date().getTime() - _ZzSs);
                    } catch (e) {
                        _lLIII.reportError("report", e);
                    }
                });
                _1iLI.extend(true, _s$s$, _lLIII.__errorCollector.collect(), _lLIII.__metricsCollector.collect());
                //对应加密第 9891行
                return _0oo0Q + ":" + _2$Ss.encodeBase64(encryption(_2$Ss.encodeObject(_s$s$), _ZzZ$));
            };
            return _lLIII;
        });

        page.when("fwcim-extend-prototype").register("fwcim-form-reporter", function (_I1ilL, _iI1l, _QOoO) {
            var _iIi1 = "metadata1";
            var _Iilii = 'input[type="hidden"][name="' + _iIi1 + '"]';

            var _$sz2Z = function (_111l, _22ss) {
                if (!_111l) {
                    throw new Error("A form wasn't provided to the form reporter and is required.");
                }
                this.__form = _111l;
                _I1ilL.call(this, _I1ilL.resolveCollectors([
                    ["fwcim-mercury-collector", {
                        mercuryPath: _22ss,
                        container: _I1ilL.__container
                    }]
                ].concat(_$sz2Z.DEFAULT_COLLECTORS), {
                    form: this.__form
                }));
            };
            _$sz2Z.prototype = _QOoO(_I1ilL.prototype);
            _$sz2Z.prototype.constructor = _$sz2Z;
            _$sz2Z.DEFAULT_COLLECTORS = _I1ilL.DEFAULT_COLLECTORS.concat(["fwcim-time-to-submit-collector","fwcim-form-input-telemetry-collector" ,"fwcim-canvas-collector", "fwcim-captcha-telemetry-collector", ["fwcim-timer-collector", {
                key: "end"
            }]]);

            _$sz2Z.prototype.report = function () {
                var _Lll1 = _I1ilL.prototype.report.apply(this, arguments); // 返回的就是metadata1加密后的数据
                if (!_iI1l(this.__form).has(_Iilii).length) {

                    _iI1l(this.__form).append(_iI1l('<input name="' + _iIi1 +'" type="hidden" />'));
                }
                _iI1l(this.__form).find(_Iilii).val(_Lll1);
            };
            return _$sz2Z;
        });

        //反馈到/1/batch/1/OE/
        page.when("fwcim-extend-prototype").register("fwcim-csm-reporter", function (_0Q0Q0, _$$zS) {
            var _00QOo = "metadata1";
            var _llii = function () {
                _0Q0Q0.call(this, _0Q0Q0.resolveCollectors(_llii.DEFAULT_COLLECTORS));
            };
            _llii.prototype = _$$zS(_0Q0Q0.prototype);
            _llii.prototype.constructor = _llii;
            _llii.DEFAULT_COLLECTORS = _0Q0Q0.DEFAULT_COLLECTORS.concat(["fwcim-ciba-collector",
                ["fwcim-timer-collector", {
                    key: "end"
                }]
            ]);
            _llii.prototype.report = function () {
                var _QOOOQ = _0Q0Q0.prototype.report.apply(this, arguments);

                if (typeof wd.ue === "object" && typeof wd.ue.log === "function") {

                    ue.log({
                        k: "fwcim",
                        t: new Date().getTime(),
                        md: _QOOOQ,
                        r: wd.ue_id || null,
                        p: wd.location ? wd.location.href : null,
                        c: wd.fwcimData ? wd.fwcimData.customerId :null
                    }, "cap-ciba", {
                        n: true
                    });
                }
            };
            return _llii;
        });



        "use strict";
        // 实现一个encoding
        page.when("fwcim-json").register("fwcim-encoding", function (_$$sz) {
            var _z2ZS = [];

            // crc32(_O0oQ)
            function _zSSZ(_O0oQ) {
                if (_z2ZS.length === 0) {
                    var _sssz = 3988292384;
                    for (var i = 0; i < 256; i++) {
                        var _ZZZ$ = i;
                        for (var _OOQOO = 0; _OOQOO < 8; _OOQOO++) {

                            if (_ZZZ$ & 1 === 1) {
                                _ZZZ$ = _ZZZ$ >>> 1 ^ _sssz;
                            } else {
                                _ZZZ$ = _ZZZ$ >>> 1;
                            }
                        }
                        _z2ZS[i] = _ZZZ$;
                    }
                }
                var _lILI = 0;
                var _ss22;
                _lILI = _lILI ^ 4294967295;
                for (var i = 0; i < _O0oQ.length; i++) {
                    var _ss22 = (_lILI ^ _O0oQ.charCodeAt(i)) & 255;

                    _lILI = _lILI >>> 8 ^ _z2ZS[_ss22];
                }
                _lILI = _lILI ^ 4294967295;
                return _lILI;
            }

            //encodeUTF8(_QQ0oQ)
            function _i1ilL(_QQ0oQ) {
                var _0O0O = [];
                for (var _ZsS2 = 0; _ZsS2 < _QQ0oQ.length; _ZsS2++) {
                    var _2$sS = _QQ0oQ.charCodeAt(_ZsS2);
                    if (_2$sS <128) {
                        _0O0O.push(String.fromCharCode(_2$sS));
                    } else if (_2$sS >=128 && _2$sS < 2048) {
                        _0O0O.push(String.fromCharCode(_2$sS >> 6 | 192));
                        _0O0O.push(String.fromCharCode(_2$sS & 63 |128));
                    } else {
                        _0O0O.push(String.fromCharCode(_2$sS >> 12 | 224));
                        _0O0O.push(String.fromCharCode(_2$sS >> 6 & 63 |128));
                        _0O0O.push(String.fromCharCode(_2$sS & 63 |128));
                    }
                }

                return _0O0O.join('');
            }

            // encodeObject(_i1L1)
            function _ll11(_i1L1) {
                var _2s2s = _i1ilL(_$$sz.stringify(_i1L1));
                var _o0QQo = _zSZs(_zSSZ(_2s2s));
                return _o0QQo + "#" + _2s2s;
            }

            // encodeBase64(_sS2S)
            function _ooQoO(_sS2S) {
                var _00oOo = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                var _0OoQO = [];
                var _Oo0oO, _L1ll, _2$zZZ, _QOQQ, _1ll1, _ZS$z2, _1l1li;
                var _S$2Z = 0;
                while (_S$2Z < _sS2S.length) {
                    _Oo0oO = _sS2S.charCodeAt(_S$2Z++);
                    _L1ll = _sS2S.charCodeAt(_S$2Z++);
                    _2$zZZ = _sS2S.charCodeAt(_S$2Z++);
                    _QOQQ = _Oo0oO >> 2;
                    _1ll1 = (_Oo0oO & 3) << 4 | _L1ll >> 4;
                    _ZS$z2 = (_L1ll & 15) << 2 | _2$zZZ >> 6;
                    _1l1li = _2$zZZ & 63;
                    if (isNaN(_L1ll)) {
                        _ZS$z2 = _1l1li = 64;
                    } else if (isNaN(_2$zZZ)) {
                        _1l1li = 64;
                    }
                    _0OoQO.push(_00oOo.charAt(_QOQQ));
                    _0OoQO.push(_00oOo.charAt(_1ll1));
                    _0OoQO.push(_00oOo.charAt(_ZS$z2));
                    _0OoQO.push(_00oOo.charAt(_1l1li));
                }
                return _0OoQO.join('');
            }

            // encodeHex(_1llii)
            function _zSZs(_1llii) {
                var _00QQ = "0123456789ABCDEF";

                return [_00QQ.charAt(_1llii >>> 28 & 15), _00QQ.charAt(_1llii >>> 24& 15), _00QQ.charAt(_1llii >>> 20 & 15), _00QQ.charAt(_1llii >>> 16 & 15),
                    _00QQ.charAt(_1llii >>> 12 & 15), _00QQ.charAt(_1llii >>> 8 & 15),
                    _00QQ.charAt(_1llii >>> 4 & 15), _00QQ.charAt(_1llii & 15)].join('');
            }

            return {
                crc32: _zSSZ,
                crc_table: _z2ZS,
                encodeUTF8: _i1ilL,
                encodeBase64: _ooQoO,
                encodeHex: _zSZs,
                encodeObject: _ll11
            };
        });



        "use strict";
        page.when("fwcim-form-reporter").register("fwcim-profiler", function (_LiL1l, _OO0O0Q, _lILil, _ooOoQ, _11L11) {
            var _oOoOO;
            var _0Oo0O = {};
            var _ooQOo = function (_1LllI) {
                var _lliL;
                for (var _0oO0o = 0; _0oO0o < _1LllI; _0oO0o++) {
                    _lliL += Math.floor(Math.random() * 16).toString(16);
                }
                return _lliL;
            };

            function _22Zz() {
                if (!_oOoOO) {
                    _oOoOO = new _ooOoQ();
                    var _S$zs = _OO0O0Q(function () {
                        _oOoOO.report();
                    },30000);
                    _LiL1l("form").on('submit', function () {

                        try {
                            _S$zs();
                        } catch (e) {

                            if (typeof wd.ueLogError == "function") {
                                wd.ueLogError(e, {
                                    message: "Failed to report metadata via CSM",
                                    logLevel: "error",
                                    attribution:"fwcim"
                                });
                            }
                        }
                    });

                    setInterval(_S$zs, 60000);
                    page.when("fwcim-afterLoad").execute("fwcim-csmReporterAfterLoad", function () {
                        _LiL1l('a:not([href^="#"])').on("mousedown", _S$zs).on("touchstart", _S$zs);
                        _oOoOO.report();
                    });
                }
            }

            function _LlI1i(_LIii1, _$$sS) {

                _LiL1l(_LIii1).each(function () {

                    _$2sS$(this, _$$sS);
                });
            }






            function _$2sS$(_LlIL, _2Z$s) {

                if (!_LiL1l(_LlIL).data("fwcim-id")) {
                    var _O0Oo0;
                    while (!_O0Oo0 || _0Oo0O.hasOwnProperty(_O0Oo0)) {
                        _O0Oo0 = _ooQOo(8);
                    }
                    _LiL1l(_LlIL).data("fwcim-id", _O0Oo0);
                    _0Oo0O[_O0Oo0] = new _11L11(_LlIL, _2Z$s);
                    _LiL1l(_LlIL).on("submit", function () {
                        try {
                            _0Oo0O[_O0Oo0].report();
                        } catch (e) {
                            if (typeof wd.ueLogError == "function") {
                                wd.ueLogError(e, {
                                    message: "Failed to report metadata via the form",
                                    logLevel: "error",
                                    attribution: "fwcim"
                                });
                            }
                        }
                    });
                }
            }


            function _iiLI1L(_Ii1II) {
                if (!_LiL1l(_Ii1II).data("fwcim-id")) {
                    throw new Error("The specified form ID couldn't be found.");
                }
                var _lLlll = _LiL1l(_Ii1II).data("fwcim-id");
                var _Qo00O = _0Oo0O[_lLlll];
                if (!_Qo00O) {

                    throw new Error("The reporter for this form couldn't be found.");
                }
                return _lILil.prototype.report.apply(_Qo00O);
            }

            return {
                globalProfile: _22Zz,
                profile: _LlI1i,
                reportForm: _iiLI1L
            };
        });
        page.when("fwcim-ready").execute("fwcim-profiler-ex", function (_O0OoQ, _0QOQ0O, _0QoOQ) {
            var _QOoOQ = "fwcim-form";
            var _QQO0 = "." + _QOoOQ;
            var _lLiI = _O0OoQ.state("fwcim-profiler-data");
            var _Z2S;
            var _sS$;
            page.when("fwcim-afterLoad").execute(function () {
                setTimeout(function () {
                    _0QoOQ.globalProfile();
                }, 1e3);
            });
            page.when('af').execute(function () {
                _0QoOQ.globalProfile();
            });
            if (_lLiI) {
                if (_lLiI.mercuryLocation) {

                    _Z2S = _lLiI.mercuryLocation;
                }
                if (_lLiI.formName) {
                    _sS$ = _0QOQ0O('form[name="' +  _lLiI.formName + '"]');
                    _sS$.addClass(_QOoOQ);
                }
                _0QoOQ.profile(_QQO0, _Z2S);
            }
        });
        page.declare("3.0.0");
        "use strict";

        var _o0 = ["fwcim-audio-fingerprint-collector", //获取html5 audio
        "fwcim-battery-collector",  //获取html5 battery
        "fwcim-browser-collector",  //获取浏览器基本信息
        "fwcim-canvas-collector",  // 获取html5 canvas
        "fwcim-capability-collector", // capability性能
        "fwcim-captcha-telemetry-collector",  // 验证码
        "fwcim-ciba-collector", //
        "fwcim-dnt-collector",  // 
        "fwcim-element-telemetry-collector", 
        "fwcim-error-collector", 
        "fwcim-form-input-telemetry-collector", 
        "fwcim-gpu-collector",  // 获取gpu
        "fwcim-history-collector",  // history
        "fwcim-instant-collector", 
        "fwcim-local-storage-identifier-collector",  // localstorage, amzbig
        "fwcim-math-fingerprint-collector", // math数学函数
        "fwcim-mercury-collector", // swf
        "fwcim-metrics-collector",
        "fwcim-performance-collector", //Window.performance
        "fwcim-plugin-collector", // wd.navigator.plugins
        "fwcim-screeninfo-collector", //Screen
        "fwcim-script-collector", 
        "fwcim-script-version-collector",  // 
        "fwcim-time-to-submit-collector", // 提交的时间
        "fwcim-timer-collector",  // time
        "fwcim-timezone-collector" // timezone
    ];
        page.when("fwcim-zepto").execute("fwcim-ex-collectors", function (_i11i) {

            page.when.apply(page, _o0).register("fwcim-collectors", function () {
                var _LIiI = Array.prototype.slice.call(arguments, 0);
                var _OQ0OO = {};
                _i11i.each(_LIiI, function (_2zZ$, _LIIL) {
                    _OQ0OO[_o0[_2zZ$]] = _LIIL;
                });
                return _OQ0OO;
            });
        });
        
        page.when("fwcim-ready").register("fwcim-active-setup-plugin-collector", function (_0QoQ0) {
            var data = function (e) {
                e = e || {};
                this.__container = e.container;
                this.__capsEl = this.__prepareBrowserCaps();
            };
            data.prototype.__prepareBrowserCaps = function () {
                if (this.__container) {
                    var span = doc.createElement("span");
                    span.id = "fwcim-caps";
                    span.style.behavior = "url('#default#clientCaps')";
                    this.__container.append(span);
                    return span;
                } else {
                    throw new Error("The container does not exist.");
                }
            };
            data.prototype.collect = function () {
                var self = this;
                var json = {
                    'AB': "{7790769C-0471-11D2-AF11-00C04FA35D02}",
                    'WDUN': "{89820200-ECBD-11CF-8B85-00AA005B4340}",
                    'DA': "{283807B5-2C60-11D0-A31D-00AA00B92C03}",
                    'DAJC': "{4F216970-C90C-11D1-B5C7-0000F8051515}",
                    'DS': "{44BBA848-CC51-11CF-AAFA-00AA00B6015C}",
                    'DHDB': "{9381D8F2-0288-11D0-9501-00AA00B911A5}",
                    'DHDBFJ':"{4F216970-C90C-11D1-B5C7-0000F8051515}",
                    'ICW': "{5A8D6EE0-3E18-11D0-821E-444553540000}",
                    'IE': "{89820200-ECBD-11CF-8B85-00AA005B4383}",
                    'IECFJ': "{08B0E5C0-4FCB-11CF-AAA5-00401C608555}",
                    'WMP': "{22D6F312-B0F6-11D0-94AB-0080C74C7E95}",
                    'NN': "{44BBA842-CC51-11CF-AAFA-00AA00B6015B}",
                    'OBP': "{3AF36230-A269-11D1-B5BF-0000F8051515}",
                    'OE': "{44BBA840-CC51-11CF-AAFA-00AA00B6015C}",
                    'TS': "{CC2A9BA0-3BDD-11D0-821E-444553540000}",
                    'MVM': "{08B0E5C0-4FCB-11CF-AAA5-00401C608500}",
                    'DDE': "{44BBA855-CC51-11CF-AAFA-00AA00B6015F}",
                    'DOTNET': "{6FAB99D0-BAB8-11D1-994A-00C04F98BBC9}",
                    'YHOO': "{E5D12C4E-7B4F-11D3-B5C9-0050045C3C96}",
                    'SWDNEW': "{166B1BCA-3F9C-11CF-8075-444553540000}",
                    'DOTNETFM':"{89B4C1CD-B018-4511-B0A1-5476DBF70820}",
                    'MDFH': "{8EFA4753-7169-4CC3-A28B-0A1643B8A39B}",
                    'FLH': "{D27CDB6E-AE6D-11CF-96B8-444553540000}",
                    'SW': "{2A202491-F00D-11CF-87CC-0020AFEECF20}",
                    'SWD': "{233C1507-6A77-46A4-9443-F871F945D258}",
                    'RP': "{CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA}",
                    'QT': "{DE4AF3B0-F4D4-11D3-B41A-0050DA2E6C21}"
                };
                var _2s2$Z = [];
                _0QoQ0.each(json, function (_OQ00o, _LIiiI) {
                    if (self.__capsEl.isComponentInstalled && self.__capsEl.isComponentInstalled(_LIiiI, 'componentid')) {

                        var _QOooO = self.__capsEl.getComponentVersion(_LIiiI, "componentid");
                        _2s2$Z.push({
                            name: _OQ00o,
                            version: _QOooO,
                            str: "|" + _OQ00o +" " + _QOooO
                        });
                    }
                });
                return {
                    plugins: _2s2$Z
                };
            };
            return data;
        });
        page.when("fwcim-ready").register("fwcim-activex-plugin-collector", function () {
            var _li1L = function (_lilI) {
                _lilI = _lilI || {};
                this.__container = _lilI.container;
                this.__setupVBScript();
            };
            _li1L.prototype.__setupVBScript = function () {
                var _LLil = 'Function dAXP(n, v)on error resume nextset o = CreateObject(v)If IsObject(o) ThenSelect case ncase "ShockwaveDirector"f = o.ShockwaveVersion("")case "ShockwaveFlash"f = o.FlashVersion()case "RealPlayer"f = o.GetVersionInfocase Elsef = ""end SelectdAXP = fEnd IfEnd Function';
                if (!this.__container) {
                    throw new Error("The container was not created properly.");
                }
                var _$s$z = doc.createElement("script");
                _$s$z.type = "text/vbscript";
                _$s$z.text = _LLil;
                this.__container.append(_$s$z);
            };
            _li1L.prototype.collect= function () {
                var _I1LIi = navigator.userAgent.match(/Windows NT 6.0/);
                var _iLI1 = [];
                _iLI1.push(this.__checkActiveXPlugin("SWCtl.SWCtl"));
                var _O00o00 = this.__checkActiveXPlugin("ShockwaveFlash.ShockwaveFlash");
                var _iiLlL = null;
                if (_O00o00) {
                    _iiLlL = (_O00o00.version >> 16) + "." + (_O00o00.version & 65535);
                    _iLI1.push(_O00o00);
                }
                if (!_I1LIi) {
                    _iLI1.push(this.__checkActiveXPlugin("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)"));

                    _iLI1.push(this.__checkActiveXPlugin("RealVideo.RealVideo(tm) ActiveX Control (32-bit)"));
                }
                return {
                    plugins: _iLI1,
                    flashVersion: _iiLlL
                };
            };
            _li1L.prototype.__checkActiveXPlugin = function (_oooQQ, _1l1Li) {
                var _oOOQO0 = true;
                try {
                    if (dAXP) {
                        _oOOQO0 =true;
                    }
                } catch (e) {

                    _oOOQO0 = false;
                }
                if (_oOOQO0) {
                    var _IlIll = dAXP(_oooQQ, _1l1Li);
                    if (_IlIll) {
                        var _iL11 = {
                            name: _oooQQ,
                            version: _IlIll,
                            str: _oooQQ + " : " + _IlIll
                        };
                        return _iL11;
                    }
                }
                return null;
            };
            return _li1L;
        });
        page.when("fwcim-ready").register("fwcim-audio-fingerprint-collector", function () {
            var _IILll = function () {
                var audioContext = wd.AudioContext || wd.webkitAudioContext;
                this.__data = {
                    audio: {
                        support: {
                            context: !!audioContext,
                            oscillator: !!(audioContext && audioContext.prototype.createOscillator)
                        }
                    }
                };
                var _00OQ = this;
                if (this.__data.audio.support.context && this.__data.audio.support.oscillator) {
                    var _SZ2sSz = new audioContext();
                    var _i1iLL = _SZ2sSz.createAnalyser();
                    var _1LIll = _SZ2sSz.createGain();
                    _1LIll.gain.value = 0;
                    var _1lli1 = _SZ2sSz.createScriptProcessor(4096, 1, 1);
                    var _ii1lI = _SZ2sSz.createOscillator();
                    _ii1lI.type = "triangle";
                    _ii1lI.frequency.value = 440;
                    _ii1lI.connect(_i1iLL);
                    _i1iLL.connect(_1lli1);
                    _1lli1.connect(_1LIll);
                    _1LIll.connect(_SZ2sSz.destination);
                    _1lli1.onaudioprocess = function (_2S$Z) {
                        _2S$Z = new Float32Array(_i1iLL.frequencyBinCount);
                        _i1iLL.getFloatFrequencyData(_2S$Z);
                        _ii1lI.stop();
                        _i1iLL.disconnect();
                        _1lli1.disconnect();
                        _1LIll.disconnect();
                        _00OQ.__data.audio.fingerprint = '' + _2S$Z.filter(function (_0oQ0Q) {
                            return _0oQ0Q !== NaN && Math.abs(_0oQ0Q) !== Infinity;
                        }).reduce(function (_ii1i, _lLiII) {
                            return _ii1i + _lLiII;
                        }, 0);
                    };
                    _ii1lI.start(0);
                }
            };
            _IILll.prototype.collect = function () {
                return this.__data;
            };
            return _IILll;
        });

        // html5 battery api
        page.when("fwcim-ready").register("fwcim-battery-collector", function () {
            var _Z$zZs = function () {
                var _lILII = this;
                this.__battery = null;
                if (navigator.getBattery) {
                    navigator.getBattery().then(function (_LLlIi) {
                        _lILII.__battery = _LLlIi;
                    });
                }
            };
            _Z$zZs.prototype.collect = function () {
                if (this.__battery === null) {
                    return;
                }
                return {
                    battery: {
                        charging: this.__battery.charging,
                        level: this.__battery.level,
                        chargingTime: this.__battery.chargingTime === Infinity ? -1 : this.__battery.chargingTime,
                        dischargingTime: this.__battery.dischargingTime === Infinity ? -1 : this.__battery.dischargingTime
                    }
                };
            };
            return _Z$zZs;
        });

        // browser, 来源, ua, 当前链接, webdriver
        page.when("fwcim-ready").register( "fwcim-browser-collector" , function () {
            var _LLI1 = function () {
            };
            _LLI1.prototype.collect = function () {
                return {
                    referrer: doc.referrer,
                    userAgent: navigator.userAgent,
                    location: wd.location ? wd.location.href : null,
                    webDriver: typeof navigator.webdriver === "boolean" ? navigator.webdriver : null
                };
            };
            return _LLI1;
        });

        // html5 canvas
        page.when("fwcim-encoding" , "fwcim-zepto", "fwcim-ready").register("fwcim-canvas-collector", function (_zZ2z, _1iLL1) {
            var _Z2s2 = function (_LLiI1) {
                _LLiI1 = _LLiI1 || {};
                this.__canvas = doc.createElement("canvas");
                if (_LLiI1.form) {
                    this.__form = _LLiI1.form;
                }
                this.__data = null;
            };
            var _sSs$ = function (_ii1lIL) {
                var _$2Z$ = ['l', 'e', 256, 'ngth', 0];
                var _Ooo0Q = [];
                for (var i = 0; i < 256; _Ooo0Q[i++] = 0) ;
                for (var i = 0; i < _ii1lIL.length; i++) {

                    _Ooo0Q[_ii1lIL[i]]++;
                }
                return _Ooo0Q;
            };

            
            _Z2s2.prototype.__collect = function () {
                var _0Q0O =  150;
                var _0QOQO = 60;
                var rearray = [];
                this.__canvas.width = _0Q0O;
                this.__canvas.height = _0QOQO;
                this.__canvas.style.display = "inline";
                var cont2d = this.__canvas.getContext("2d"); //创建画笔
                cont2d.rect(0, 0,10,10); //在坐标0,0处，绘制 10*10 像素的矩形
                cont2d.rect(2, 2, 6, 6); //在坐标2,2处，绘制 6*6 像素的矩形
                rearray.push(cont2d.isPointInPath(5, 5, "evenodd") === false ? "yes" :"no"); // 如果指定的点位于当前路径中
                cont2d.textBaseline = "alphabetic"; //属性设置或返回在绘制文本时的当前文本基线
                cont2d.fillStyle = "#f60"; // 设置或返回用于填充绘画的颜色、渐变或模式
                cont2d.fillRect(125, 1, 62, 20); // 属性来设置用于填充绘图的颜色、渐变或模式 context.fillRect(x,y,width,height)
                cont2d.fillStyle = "#069"; // 设置或返回用于填充绘画的颜色、渐变或模式
                cont2d.font = "8pt Arial"; // 设置或返回用于填充绘画的字体
                cont2d.fillText("Cwm fjordbank glyphs vext quiz,", 2, 15); // 在画布上绘制填色的文本。文本的默认颜色是黑色
                cont2d.fillStyle = "rgba(102, 204, 0, 0.2)"; // 设置或返回用于填充绘画的颜色、渐变或模式
                cont2d.font = "11pt Arial"; // 设置或返回用于填充绘画的字体
                cont2d.fillText("Cwm fjordbank glyphs vext quiz,", 4, 45); // 在画布上绘制填色的文本。文本的默认颜色是黑色
                cont2d.globalCompositeOperation = "multiply"; // 属性设置或返回如何将一个源（新的）图像绘制到目标（已有）的图像上
                cont2d.fillStyle = "rgb(255,0,255)"; // 设置或返回用于填充绘画的颜色、渐变或模式
                cont2d.beginPath(); // 开始一条路径，或重置当前的路径
                cont2d.arc(20, 20, 20, 0, Math.PI * 2, true); // 创建弧/曲线
                cont2d.closePath(); //创建从当前点到开始点的路径
                cont2d.fill();
                cont2d.fillStyle = "rgb(0,255,255)";
                cont2d.beginPath();
                cont2d.arc(50, 20, 20, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.fillStyle = "rgb(255,255,0)";
                cont2d.beginPath();
                cont2d.arc(35,40, 20, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.fillStyle = "rgb(255,0,255)";
                cont2d.arc(20, 25,10, 0, Math.PI * 2, true);
                cont2d.arc(20, 25, 20, 0, Math.PI * 2, true);
                cont2d.fill("evenodd");
                var gstyle = cont2d.createLinearGradient(40, 50, 60, 78);
                gstyle.addColorStop(0, "blue");
                gstyle.addColorStop("red");
                gstyle.addColorStop(1, "white");
                cont2d.fillStyle = gstyle;
                cont2d.beginPath();
                cont2d.arc(70, 50,10, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.font = "10pt dfgstg";
                cont2d.strokeText(Math.tan(-1e+300).toString(), 4, 30);
                cont2d.fillText(Math.cos(-1e+300).toString(), 4,40);
                cont2d.fillText(Math.sin(-1e+300).toString(), 4, 50);
                cont2d.beginPath();
                cont2d.moveTo(25, 0);
                cont2d.quadraticCurveTo(1, 1, 1, 5);
                cont2d.quadraticCurveTo(1, 76, 26,10);
                cont2d.quadraticCurveTo(26, 96, 6,12);
                cont2d.quadraticCurveTo(60, 96,41,10);
                cont2d.quadraticCurveTo(121, 86, 101, 7);
                cont2d.quadraticCurveTo(121, 1, 56, 1);
                cont2d.stroke();
                cont2d.globalCompositeOperation = difference;
                cont2d.fillStyle = "rgb(255,0,255)";
                cont2d.beginPath();
                cont2d.arc(80, 20, 20, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.fillStyle = "rgb(0,255,255)";
                cont2d.beginPath();
                cont2d.arc(110, 20, 20, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.fillStyle = "rgb(255,255,0)";
                cont2d.beginPath();
                cont2d.arc(95,40, 20, 0, Math.PI * 2, true);
                cont2d.closePath();
                cont2d.fill();
                cont2d.fillStyle = "rgb(255,0,255)";
                rearray.push("canvas fp:" + this.__canvas.toDataURL());
                var _sszZ = _zZ2z.crc32(rearray.join("~"));
                var _Iil1 = null;
                if (this.__form) {
                    var _O0Oo0O = _1iLL1(this.__form).find('input[type="email"]');
                    if (_O0Oo0O.size() !== 0) {
                        var _IILi = (_O0Oo0O.val() || "Not Available").toUpperCase();
                        cont2d.fillStyle = "#808080";
                        cont2d.font = "8pt Arial";
                        cont2d.fillText(_IILi, 2, 30);
                        _Iil1 = _zZ2z.crc32(this.__canvas.toDataURL());
                    }
                }
                this.__data = {
                    hash: _sszZ,
                    emailHash: _Iil1,
                    histogramBins: _sSs$(cont2d.getImageData(0, 0, _0Q0O, _0QOQO).data)
                };
            };
            _Z2s2.prototype.collect = function () {
                if (!this.__canvas || !(this.__canvas.getContext && this.__canvas.getContext("2d"))) {
                    return null;
                }
                if (this.__data == null) {

                    this.__collect();
                }
                return {
                    canvas: this.__data
                };
            };
            return _Z2s2;
        });

        // capability
        page.when("fwcim-each").register("fwcim-capability-collector", function (_l1Il, _zZSS) {
            var _LLll = function () {

            };
            _LLll.prototype.collect = function () {
                if (!_l1Il || !_l1Il.capabilities) {
                    return {};
                }
                var date = new Date();
                var _22zSs = {
                    js: {},
                    css: {},
                    elapsed: -1
                };
                var _11II = ["audio", "canvas", "dragDrop", "geolocation", "hires", "history", "localStorage", "orientation", "svg", "touch", "video", "webWorker"];
                _zZSS(_11II, function (_z2ZZ, _LilLi) {
                    if (typeof _l1Il.capabilities[_z2ZZ] != "undefined") {
                        _22zSs.js[_z2ZZ] = _l1Il.capabilities[_z2ZZ];
                    }
                });
                var _2ZsS$ = ["textShadow", "textStroke", "boxShadow", "borderRadius", "borderImage", "opacity", "transform", "transform3d", "transition"];
                _zZSS(_2ZsS$, function (_O0O0O, _0QoOo) {
                    if (typeof _l1Il.capabilities[_O0O0O] != "undefined" ) {
                        _22zSs.css[_O0O0O] = _l1Il.capabilities[_O0O0O];
                    }
                });
                _22zSs.elapsed = new Date() - date;
                return {
                    capabilities: _22zSs
                };
            };
            return _LLll;
        });
        page.when("fwcim-captcha-telemetry").register("fwcim-captcha-telemetry-collector", function (_QoQoO, _OOoOQ, _Zzs2) {
            var _llll1 = "captcha";
            var _i1lli = function (_oQQ0o) {
                _oQQ0o = _oQQ0o || {};
                this.__form = _oQQ0o.form;
                if (!this.__form) {

                    throw new Error("A form was not specified for the captcha telemetry collector.");
                }
                var _Llll = _QoQoO(this.__form).find(_i1lli.CAPTCHA_FIELDS.join(","));
                var _SSsZz = _QoQoO(this.__form).find(_i1lli.CAPTCHA_REFRESH_LINKS.join(","));
                if (!_Llll.length || !_SSsZz.length) {
                    return;
                }
                this.__telemetry = new _Zzs2(_Llll, this.__form, _SSsZz);
                this.__collector = new _OOoOQ(_QoQoO.extend(true, {}, _oQQ0o, {
                    key: _llll1,
                    telemetry: this.__telemetry
                }));
            };
            _i1lli.CAPTCHA_FIELDS = ["#ap_captcha_guess", "#auth-captcha-guess", ".fwcim-captcha-guess"];
            _i1lli.CAPTCHA_REFRESH_LINKS= [".fwcim-captcha-refresh", "#ap_captcha_refresh_link", "#auth-captcha-refresh-link", "#auth-refresh-audio", "#auth-switch-captcha-to-audio", "#auth-switch-captcha-to-image"];
            _i1lli.prototype.collect = function () {
                if (!this.__telemetry || !this.__collector) {
                    return null;
                }
                var _s$ss = this.__collector.collect();
                var _0OOOo = this.__telemetry;
                _QoQoO.extend(true, _s$ss[_llll1], {
                    refreshes: _0OOOo.refreshes || 0
                });
                return _s$ss;
            };
            return _i1lli;
        });
        page.when("fwcim-ciba").register("fwcim-ciba-collector", function (_00O0Q0) {
            var _o0Q0Q = function () {
                this.__ciba = new _00O0Q0(doc);
            };
            _o0Q0Q.prototype.collect = function () {
                var _iilil1 = {
                    events: this.__ciba.events.slice(0),
                    start : this.__ciba.start
                };
                this.__ciba.clear();
                return {
                    ciba: _iilil1
                };
            };
            return _o0Q0Q;
        });
        page.when("fwcim-ready").register("fwcim-dnt-collector", function () {
            var _SsSZ = function () {
            };
            _SsSZ.prototype.__normalize = function (_OO00Q) {
                switch (_OO00Q) {
                    case true:
                    case 1:
                    case '1':
                    case "yes":
                        return true;
                    case false:
                    case 0:
                    case '0':
                    case "no":
                        return false;
                    default:
                        return null;
                }
            };
            _SsSZ.prototype.collect = function () {
                var track = [navigator.doNotTrack, navigator.msDoNotTrack, wd.doNotTrack];
                for (var i = 0; i < track.length; i++) {
                    var _QQoOo = track[i];

                    if (_QQoOo !== _OQ) {
                        return {
                            dnt: this.__normalize(_QQoOo)
                        };
                    }
                }
                return {};
            };
            return _SsSZ;
        });
        page.when("fwcim-element-telemetry").register("fwcim-element-telemetry-collector", function (_22z$) {
            var _oQoooO = function (_S$$S) {
                _S$$S = _S$$S || {};
                this.__telemetry = _S$$S.telemetry || new _22z$(_S$$S.el);
                this.__key = _S$$S.key ||"interaction";
            };
            _oQoooO.prototype.collect = function () {
                var _I1il1L = {
                    keys: this.__telemetry.keyPresses,
                    keyPressTimeIntervals: this.__telemetry.keyPressTimeIntervals.slice(0),
                    copies: this.__telemetry.copies,
                    cuts: this.__telemetry.cuts,
                    pastes: this.__telemetry.pastes,
                    clicks: this.__telemetry.clicks,
                    touches: this.__telemetry.touches
                };
                _I1il1L.mouseClickPositions = this.__telemetry.mouseClickPositions.slice(0);
                var _IIL1 = ["keyCycles", "mouseCycles", "touchCycles"];
                for (var i = 0; i < _IIL1.length; i++) {
                    var _Ooo00 = _IIL1[i];
                    if (this.__telemetry[_Ooo00] && this.__telemetry[_Ooo00].length) {
                        _I1il1L[_Ooo00] = this.__telemetry[_Ooo00];
                    }
                }
                var _Z$zs = {};
                _Z$zs[this.__key] = _I1il1L;
                return _Z$zs;
            };
            return _oQoooO;
        });
        page.when("fwcim-json").register("fwcim-error-collector", function (_S22Ss) {
            var _0QQO = function () {
                this.__errors = [];
            };
            _0QQO.prototype.log = function (_OQQO, _O0Q0Q) {
                var _IL1I1 = _O0Q0Q.message && (_O0Q0Q.name|| "Error") + (": ") + _O0Q0Q.message || _O0Q0Q.toString();
                this.__errors.push("[" + _OQQO + "] " + _S22Ss.stringify(_IL1I1));
                if (this.__errors.length > 10) {
                    this.__errors.splice(0, 1);
                }
            };
            _0QQO.prototype.collect = function () {
                return {
                    errors: this.__errors
                };
            };
            return _0QQO;
        });
        page.when("fwcim-captcha-telemetry-collector").register("fwcim-form-input-telemetry-collector", function (_$z2S, _OQ0o0O, _1i11) {

            var _S2ZZ = function (_lLIl) {
                _lLIl = _lLIl || {};
                this.__form = _lLIl.form;
                if (!this.__form) {
                    throw new Error("A form was not specified for the form input telemetry collector.");
                }
                this.__telemetryCollectors = {};
                this.__bindFormInputTelemetry();
            };
            _S2ZZ.INPUT_SELECTORS = ['input[type="text"]', 'input[type="password"]', 'input[type="email"]', 'input[type="phone"]', 'input[type="date"]', 'input[type="datetime"]', 'input[type="numeric"]'];
            _S2ZZ.prototype.__bindFormInputTelemetry = function () {
                var _$$SS = this;
                _$z2S(this.__form).find(_S2ZZ.INPUT_SELECTORS.join(",")).not(_1i11.CAPTCHA_FIELDS.join(",")).each(function () {
                    var _iIi11 = _$z2S(this).attr('name') || _$z2S(this).attr("id");

                    if (!_iIi11) {

                        return;
                    }
                    _$$SS.__telemetryCollectors[_iIi11] = new _OQ0o0O({
                        key: _iIi11,
                        form: _$$SS.__form,
                        el: this
                    });
                });
            };
            _S2ZZ.prototype.collect = function () {
                var _s2$z = {};
                for (var collector in this.__telemetryCollectors) {
                    if (this.__telemetryCollectors.hasOwnProperty(collector)) {
                        var _O0QoOO = this.__telemetryCollectors[collector];
                        _$z2S.extend(true, _s2$z, _O0QoOO.collect());
                    }
                }

                return {
                    form: _s2$z
                };
            };
            return _S2ZZ;
        });

        // gpu
        page.when("fwcim-ready").register("fwcim-gpu-collector", function () {
            var _SSZ = "WEBGL_debug_renderer_info";
            var createCanvas = function () {
                this.__canvas = doc.createElement("canvas");
            };

            createCanvas.prototype.collect = function () {
                var _0QOoO;
                if (!this.__canvas) {
                    return null;
                }
                try {
                    _0QOoO = this.__canvas.getContext("experimental-webgl");
                    _0QOoO.viewportWidth = this.__canvas.width;
                    _0QOoO.viewportHeight = this.__canvas.height;
                } catch (e) {

                    return {
                        gpu: null
                    };
                }
                var _QQooO = _0QOoO.getExtension(_SSZ);
                if (_QQooO) {
                    return {
                        gpu: {
                            vendor: _0QOoO.getParameter(_QQooO.UNMASKED_VENDOR_WEBGL),
                            model: _0QOoO.getParameter(_QQooO.UNMASKED_RENDERER_WEBGL),
                            extensions: _0QOoO.getSupportedExtensions()
                        }
                    };
                } else {
                    return {
                        gpu: {
                            vendor: _0QOoO.getParameter(_0QOoO.VENDOR),
                            model: _0QOoO.getParameter(_0QOoO.RENDERER),
                            extensions: _0QOoO.getSupportedExtensions()
                        }
                    };
                }
            };
            return createCanvas;
        });

        // window.history collector
        page.when("fwcim-ready").register("fwcim-history-collector", function () {
            var _0000QQ = function () {
            };
            _0000QQ.prototype.collect = function () {
                return {
                    history: {
                        length: wd.history? wd.history.length : null
                    }
                };
            };
            return _0000QQ;
        });


        page.when("fwcim-input-telemetry").register("fwcim-input-telemetry-collector", function (_0o0OQ, _o0QoQ, _0oOoO) {

            var _ll1i = function (_0QOOO) {
                _0QOOO = _0QOOO || {};
                this.__form = _0QOOO.form;
                if (!this.__form) {
                    throw new Error("A form was not specified for the input telemetry collector.");
                }
                this.__key = _0QOOO.key;

                if (!this.__key) {

                    throw new Error("A key must be specified for the input telemetry collector.");
                }
                this.__telemetry = _0QOOO.telemetry || new _0oOoO(_0QOOO.el, this.__form);
                this.__collector = new _o0QoQ(_0o0OQ.extend(true, {}, _0QOOO, {
                    key: this.__key,
                    telemetry: this.__telemetry
                }));
            };
            _ll1i.prototype.collect = function () {
                var _o0OoQ = this.__collector.collect();
                var _LlILi = {};
                var _Z22S = this.__telemetry;
                if (_Z22S.width !== _OQ && _Z22S.height !== _OQ) {

                    _LlILi.width = _Z22S.width;
                    _LlILi.height = _Z22S.height;
                }
                if (_Z22S.checksum !== _OQ && _Z22S.checksum !== null) {
                    _LlILi.checksum = _Z22S.checksum;
                }
                if (_Z22S.totalFocusTime !== _OQ) {

                    _LlILi.time = _Z22S.totalFocusTime;
                }

                if (typeof _Z22S.autocomplete === "boolean") {
                    _LlILi.autocomplete = _Z22S.autocomplete;
                }
                if (typeof _Z22S.prefilled === "boolean") {
                    _LlILi.prefilled = _Z22S.prefilled;
                }
                _0o0OQ.extend(true, _o0OoQ[this.__key], _LlILi);
                return _o0OoQ;
            };
            return _ll1i;
        });
        page.register("fwcim-instant-collector", function () {
            var _QOOOQQ = function (_OQOoo) {
                _OQOoo = _OQOoo || {};
                this.__key = _OQOoo.key|| "instant";
                this.__time = new Date().getTime();
            };

            _QOOOQQ.prototype.collect = function () {

                var _$z$z = {};
                _$z$z[this.__key] = this.__time;
                return _$z$z;
            };
            return _QOOOQQ;
        });

        // localstorage identifier
        page.register("fwcim-local-storage-identifier-collector", function () {
            var _szSz = "amznfbgid";

            function _0OQQQ() {
                var _oOQQoo = 4022871197;

                function _11II1(_z2z$) {
                    _z2z$ = typeof _z2z$ === undefined || _z2z$ === null ? '' : _z2z$.toString();
                    for (var i = 0; i < _z2z$.length; i++) {
                        _oOQQoo += _z2z$.charCodeAt(i);
                        var _S2SS = 0.02519603282416938 * _oOQQoo;
                        _oOQQoo = _S2SS >>> 0;
                        _S2SS -= _oOQQoo;
                        _S2SS *= _oOQQoo;
                        _oOQQoo = _S2SS >>> 0;
                        _S2SS -= _oOQQoo;
                        _oOQQoo += _S2SS *4294967296;
                    }
                    return (_oOQQoo >>> 0) *2.3283064365386963e-10;
                }

                var _oQo00O = _11II1(" ");
                console.log(_oQo00O)
                var _Qo00o = _11II1(" ");
                var _Ii1L = _11II1(" ");
                var _LllL = 1;
                var _iLIIl = [document.body.innerHTML, navigator.userAgent, new Date().getTime()];
                for (var _Lill in _iLIIl) {

                    if (_iLIIl.hasOwnProperty(_Lill)) {
                        _oQo00O -= _11II1(_iLIIl[_Lill]);
                        if (_oQo00O < 0) {
                            _oQo00O += 1;
                        }
                        _Qo00o -= _11II1(_iLIIl[_Lill]);
                        if (_Qo00o < 0) {
                            _Qo00o += 1;
                        }
                        _Ii1L -= _11II1(_iLIIl[_Lill]);
                        if (_Ii1L < 0) {

                            _Ii1L += 1;
                        }
                    }
                }

                function _iIlL() {
                    var _Z$sss = 2091639 * _oQo00O + _LllL * 2.3283064365386963e-10;
                    _oQo00O = _Qo00o;
                    _Qo00o = _Ii1L;
                    _Ii1L = _Z$sss - (_LllL = _Z$sss | 0);
                    return _Ii1L;
                }

                function _Liili(_oQO0o) {
                    return ("0000000000" + (_iIlL() * 4294967296).toString()).slice(-_oQO0o);
                }

                var _oo0oQ = "X" + _Liili(2) + "-"+ _Liili(7) + "-" + _Liili(7);
                var _ssSS = Math.floor(new Date().getTime() / 1000);
                return _oo0oQ + ":" + _ssSS;
            }

            function _oQQOQ(_Z$s$Z) {
                return typeof _Z$s$Z === "string" && _Z$s$Z.match(/^[X\d]\d{2}\-\d{7}\-\d{7}:\d+$/);
            }

            var _l11II = function () {

            };
            _l11II.saveIdentifier = function (_oQOOQ) {
                if (!wd.localStorage) {
                    return;
                }
                if (!_oQQOQ(_oQOOQ)) {
                    return;
                }
                wd.localStorage.removeItem(_szSz);

                wd.localStorage.setItem(_szSz, _oQOOQ);
            };
            _l11II.prototype.collect = function () {
                if (!wd.localStorage) {
                    return null;
                }
                var _lILiL = wd.localStorage.getItem(_szSz);
                if (!_oQQOQ(_lILiL)) {
                    _lILiL = _0OQQQ();
                    wd.localStorage.removeItem(_szSz);

                    wd.localStorage.setItem(_szSz, _lILiL);
                }

                return {
                    lsUbid: _lILiL
                };
            };
            return _l11II;
        });

        // math fingerprint collector
        page.when("fwcim-ready").register("fwcim-math-fingerprint-collector", function () {
            var _iil1 = function () {

                this.__data = {
                    math: {
                        tan: '' + Math.tan(-1e+300),
                        sin: '' + Math.sin(-1e+300),
                        cos: '' + Math.cos(-1e+300)
                    }
                };
            };
            _iil1.prototype.collect = function () {
                return this.__data;
            };
            return _iil1;
        });

        //mercury collector, swf
        page.when("fwcim-json").register("fwcim-mercury-collector", function (_IL1Il, _Q00oQ, _2s2$Z2, _Il1I) {

            function _0oo0o() {
                var _domain = doc.domain;
                if (_domain.match(/development\.amazon\.com$/) || _domain.match(/desktop\.amazon\.com$/)) {

                    return 0;
                } else if (_domain.match(/\.com$/)) {

                    return 1;
                } else if (_domain.match(/\.co\.uk$/) || _domain.match(/\.de$/) || _domain.match(/\.fr$/) || _domain.match(/\.it$/)) {
                    return 2;
                } else if (_domain.match(/\.co\.jp$/)) {

                    return 3;
                } else if (_domain.match(/\.cn$/)) {
                    return 4;
                }
                return 1;
            }

            var _Qo0oQ;
            var _0QOoOo = false;
            if (!wd.fwcim) {
                wd.fwcim = {};
            }
            
            wd.fwcim.reportMercury = function (_iLili, _Z2SS) {
                _IL1Il.saveIdentifier(_iLili);
                _Qo0oQ = {
                    mercury: _Il1I.parse(_Z2SS)
                };
            };

            var _LiIll = function (_LIILL) {
                _LIILL = _LIILL || {};
                this.__container = _LIILL.container;
                this.__pluginCollector = new _Q00oQ();
                if (_LIILL.mercuryPath) {
                    this.embedMercury(_LIILL.mercuryPath);
                }
            };
            _LiIll.prototype.embedMercury= function (_QQOoQ) {
                if (!this.__container) {

                    return;
                }

                if (_0QOoOo) {
                    return;
                }
                _0QOoOo = true;
                var _1ILl = this.__pluginCollector.collect().flashVersion;
                if (!_1ILl || _1ILl.split(".")[0] < 9) {

                    return;
                }
                if (_QQOoQ === _OQ) {
                    return;
                }
                var _iILIl = new _IL1Il().collect();
                if (!_iILIl || !_iILIl.lsUbid) {
                    return;
                }
                var _$ss$ = _0oo0o();
                var _OOOOo = _QQOoQ + ("?value1=") + _iILIl.lsUbid + "&vip=" + _$ss$;
                var object;
                var _zs$z = '<param name="bgcolor" value="#ffffff"/><param name="AllowScriptAccess" value="always"/>';
                if (_2s2$Z2.ie()) {

                    var div = doc.createElement("div");

                    div.innerHTML =  '<object id="mercury" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1" height="1"><param name="movie" value="' + _OOOOo + '"/>' + _zs$z +"</object>";
                    object = div.firstChild;
                } else {

                    object = doc.createElement("object");
                    object.id = 'mercury';
                    object.setAttribute("style","visibility:hidden");
                    object.setAttribute('type',"application/x-shockwave-flash");
                    object.setAttribute('data', _OOOOo);
                    object.innerHTML = _zs$z + '<embed src="' + _OOOOo + '" bgcolor="#ffffff" AllowScriptAccess="always" width="1" height="1"/>';
                    object.setAttribute('width', "1");
                    object.setAttribute("height","1");
                }
                this.__container.append(object);
            };
            _LiIll.prototype.collect = function () {

                return _Qo0oQ;
            };
            return _LiIll;
        });

        page.register("fwcim-metrics-collector", function () {
            var _QQO0Q = function () {
                this.__metrics = [];
            };
            _QQO0Q.prototype.recordTiming = function (_szzS, _$Z2$2) {
                this.__metrics.push({
                    n: _szzS,
                    t: _$Z2$2
                });
            };
            _QQO0Q.prototype.collect = function () {
                var _o00oQQ = {
                    metrics: this.__metrics.slice(0)
                };

                this.__metrics = [];
                return _o00oQQ;
            };
            return _QQO0Q;
        });

        //window.navigator.plugins, 手机没有
        page.when("fwcim-ready").register("fwcim-navigator-plugin-collector", function (_$$S2Z) {
            var _zZsSS = function () {
            };
            _zZsSS.prototype.collect = function () {
                var _iLii = null;
                var _00O00 = [];
                _$$S2Z.each(wd.navigator.plugins, function (_LiilI, _zzzZ) {
                    var _1iiI1 = _zzzZ.name + " " + _zzzZ.description.replace(/[^0-9]/g, '');

                    _00O00.push({
                        name: _zzzZ.name,
                        version: _zzzZ.version,
                        str: _1iiI1
                    });
                    if (_zzzZ.name.match(/Shockwave Flash/)) {
                        if (_zzzZ.version) {
                            _iLii = _zzzZ.version;
                        } else {
                            var _oOOoO0 = _zzzZ.description.match(/([0-9.]+)\s+r([0-9.]+)/);
                            _iLii = _oOOoO0 && _oOOoO0[1] + "." + _oOOoO0[2];
                        }
                    }
                });
                return {
                    flashVersion: _iLii,
                    plugins: _00O00
                };
            };
            return _zZsSS;
        });

        //window.performance, window.performance.timing.toJSON()
        page.when("fwcim-ready").register("fwcim-performance-collector", function () {
            var _ooO0OQ = function () {

            };
            _ooO0OQ.prototype.collect = function () {
                if (!wd.performance || !wd.performance.timing || typeof wd.performance.timing.toJSON != "function") {
                    return null;
                }
                var _ilIilLi = wd.performance.timing;
                return {
                    performance: {
                        timing: _ilIilLi.toJSON()
                    }
                };
            };
            return _ooO0OQ;
        });


        page.when("fwcim-navigator-plugin-collector","fwcim-activex-plugin-collector","fwcim-active-setup-plugin-collector", "fwcim-screeninfo-collector", "fwcim-is").register("fwcim-plugin-collector" , function (_OQQoQ, _iIIL, _z2zZ2, _zZZs, _$zSz) {
            var _zsz$ = function () {
                this.__pluginCollectors = [];
                if (wd.navigator.plugins && wd.navigator.plugins.length ) {
                    this.__pluginCollectors.push(new _OQQoQ());
                }
                if (_$zSz.ie() && _$zSz.windows()) {
                    this.__pluginCollectors.push(new _iIIL());
                    this.__pluginCollectors.push(new _z2zZ2());
                }
                this.__screenInfoCollector = new _zZZs();
            };
            _zsz$.prototype.collect = function () {
                var _I1IL;
                var _1iLIl = [];
                for (var i =0; i < this.__pluginCollectors.length; i++) {
                    var _0O0Q0 = this.__pluginCollectors[i].collect();
                    _1iLIl = _1iLIl.concat(_0O0Q0.plugins);
                    _I1IL = _0O0Q0.flashVersion || _I1IL;
                }

                var _OOooQQ = '';
                var _2ZSs = '';
                if (_1iLIl.length >0) {

                    for (var i =0; i < _1iLIl.length; i++) {
                        var _oo0OOQ = _1iLIl[i];
                        if (_OOooQQ.indexOf(_oo0OOQ.name) === -1) {
                            _OOooQQ += _oo0OOQ.str;
                        }
                        _2ZSs += _oo0OOQ.str;
                    }
                } else {
                    _OOooQQ = "unknown";
                    _2ZSs = "unknown";
                }
                _OOooQQ += "||" + this.__screenInfoCollector.collect();
                _2ZSs   += "||" + this.__screenInfoCollector.collect();
                return {
                    flashVersion: _I1IL,
                    plugins: _OOooQQ,
                    dupedPlugins: _2ZSs,
                    screenInfo: this.__screenInfoCollector.collect()
                };
            };
            return _zsz$;
        });

        //screen
        page.register("fwcim-screeninfo-collector", function () {
            var _liil = function () {
            };
            _liil.prototype.collect = function () {
                var _ooOQO0 = screen.width + "-"+ screen.height + "-" + screen.availHeight + "-" + screen.colorDepth;
                _ooOQO0 += "-" + (screen.deviceXDPI !== "undefined" ? screen.deviceXDPI : "*");
                _ooOQO0 += "-" + (screen.logicalXDPI !== "undefined" ? screen.logicalXDPI : "*");
                _ooOQO0 += "-" + (screen.fontSmoothingEnabled !== "undefined" ? screen.fontSmoothingEnabled ? 1 : 0 : "*");
                return _ooOQO0;
            };
            return _liil;
        });


        page.when("fwcim-a", "fwcim-ready").register("fwcim-script-collector", function (_1iii, _z$ss) {
            var _z$z2 = function () {
                this.scripts = null;
            };
            _z$z2.prototype.__collect = function () {

                var _0QoOQo = new Date();
                var _oOQQO = doc.documentElement.innerHTML;
                var _QoQQoO = /<script[\s\S]*?>[\s\S]*?<\/script>/gi;
                var _iLiLL = [];
                var _Z2$s = [];
                var _Oo0O0 = /src="[\s\S]*?"/;
                var _oQ0OQQ = _oOQQO.match(_QoQQoO);
                for (var i = 0; i < _oQ0OQQ.length; i++) {
                    var _szZS = _oQ0OQQ[i];
                    if (_szZS.match(_Oo0O0)) {
                        var _o0o00 = _Oo0O0.exec(_szZS)[0];
                        _iLiLL.push(_o0o00.substring(5, _o0o00.length - 1));
                    } else {
                        _Z2$s.push(_1iii.crc32(_szZS));
                    }
                }
                this.scripts = {
                    dynamicUrls: _iLiLL,
                    inlineHashes: _Z2$s,
                    elapsed: new Date() - _0QoOQo,
                    dynamicUrlCount: _iLiLL.length,
                    inlineHashesCount: _Z2$s.length
                };
            };
            _z$z2.prototype.collect = function () {
                if (this.scripts === null) {
                    this.__collect();
                }

                return {
                    scripts: this.scripts
                };
            };
            return _z$z2;
        });
        page.when("fwcim-v").register("fwcim-script-version-collector", function (_O00QO) {
            var _QQQQO = function () {

            };
            _QQQQO.prototype.collect = function () {
                return {
                    version: _O00QO
                };
            };
            return _QQQQO;
        });
        
        page.when("fwcim-zepto").register("fwcim-time-to-submit-collector", function (_OoOQQ) {
            var _Z22Z2 = function (_OQooQ) {
                _OQooQ = _OQooQ || {};
                this.__form = _OQooQ.form;
                if (!this.__form) {
                    return;
                }
                var _Ill1I = this;
                _OoOQQ(this.__form).on("submit", function () {
                    _Ill1I.__submitted = new Date().getTime();
                });
                this.__start = new Date().getTime();
                this.__submitted;
            };
            _Z22Z2.prototype.collect = function () {
                if (!this.__submitted) {
                    return null;
                } else {

                    return {
                        timeToSubmit: this.__submitted - this.__start
                    };
                }
            };

            return _Z22Z2;
        });


        page.register("fwcim-timer-collector", function () {
            var _zZ2$ = function (_ILIil) {
                this.__key = _ILIil.key || 'time';
            };
            _zZ2$.prototype.collect = function () {
                var _oOoo0 = {};
                _oOoo0[this.__key] = new Date().getTime();
                return _oOoo0;
            };
            return _zZ2$;
        });

        //timezone
        page.register("fwcim-timezone-collector", function () {
            var _szZZ = function () {
            };
            _szZZ.prototype.collect= function () {
                var date = new Date();
                var date_y = new Date(date.getFullYear(), 0, 10);
                var date_x = new Date(date_y.toGMTString().replace(/ (GMT|UTC)/, ''));
                return {
                    timeZone: (date_y - date_x) / 3600000
                };
            };
            return _szZZ;
        });

        "use strict";
        //记录键盘使用次数
        page.when("fwcim-event-cycle-telemetry", "fwcim-keypress-interval-telemetry").register("fwcim-element-telemetry", function (_2ss2Z, _zsz2Z, _0OOo0) {
            var _SS$ZS2 = function (e) {
                this.__target = e;
                this.clicks = 0;
                this.touches = 0;
                this.keyPresses = 0;
                this.cuts = 0;
                this.copies = 0;
                this.pastes = 0;
                this.keyPressTimeIntervals = [];
                this.mouseClickPositions = [];
                this.__bind();
            };
            _SS$ZS2.prototype.__bind = function () {
                var _Q0Qo = this;
                _2ss2Z(this.__target).on("keydown", function () {
                    _Q0Qo.keyPresses++;
                }).on("touchend", function () {
                    _Q0Qo.touches++;
                }).on("click", function (_QOO0o00) {
                    _Q0Qo.clicks++;
                    if (_Q0Qo.mouseClickPositions.length <= 10) {
                        var _o00Q0 = _2ss2Z(_Q0Qo.__target).offset() || {
                            top:  0,
                            left:  0
                        };
                        _Q0Qo.mouseClickPositions.push([_QOO0o00.pageX - _o00Q0.left, _QOO0o00.pageY - _o00Q0.top].join(","));
                    }
                }).on("cut", function () {
                    _Q0Qo.cuts++;
                }).on("copy", function () {
                    _Q0Qo.copies++;
                }).on("paste", function () {
                    _Q0Qo.pastes++;
                });
                this.__keypressIntervalTelemetry = new _0OOo0(this.__target);
                this.keyPressTimeIntervals = this.__keypressIntervalTelemetry.keyPressTimeIntervals;
                var _QO0QoQ = new _zsz2Z("keyup", this.__target);
                this.keyCycles = _QO0QoQ.eventCycles;
                var _1LIII = new _zsz2Z("mousedown","mouseup", this.__target);

                this.mouseCycles = _1LIII.eventCycles;
                var _$SZ$ = new _zsz2Z("touchend", this.__target);
                this.touchCycles = _$SZ$.eventCycles;
            };
            return _SS$ZS2;
        });
        "use strict";

        //计算输入名字，邮箱，密码的速度
        page.when("fwcim-extend-prototype", "fwcim-encoding", "fwcim-element-telemetry").register("fwcim-input-telemetry", function (_z$$2, _sS2$$, _OQOO0, _Q0o00) {
            var tart = function (_ZSSZ, _0OOoo) {
                this.__form = _0OOoo;
                this.width = _z$$2(_ZSSZ).width();
                this.height = _z$$2(_ZSSZ).height();

                this.totalFocusTime = 0;
                this.checksum = null;
                this.autocomplete = null;
                this.prefilled = !!_z$$2(_ZSSZ).val();
                this.__keypress = false;
                this.__focusTime = 0;
                _Q0o00.call(this, _ZSSZ);
            };
            tart.prototype = _sS2$$(_Q0o00.prototype);
            tart.prototype.constructor = tart;

            tart.prototype.__bind = function () {
                _Q0o00.prototype.__bind.apply(this, arguments);

                var _Q0QO0 = this;
                _z$$2(this.__target).on('keydown', function () {
                    _Q0QO0.__keypress = true;
                }).on("focus", function () {
                    _Q0QO0.__focusTime = new Date();
                }).on("blur", function () {
                    if (_Q0QO0.__focusTime !== 0) {
                        _Q0QO0.totalFocusTime+= new Date() - _Q0QO0.__focusTime;
                        _Q0QO0.__focusTime = 0;
                    }
                });
                _z$$2(this.__form).on('submit', function () {
                    if (_Q0QO0.__focusTime !== 0) {
                        _Q0QO0.totalFocusTime += new Date() - _Q0QO0.__focusTime;
                        _Q0QO0.__focusTime = 0;
                    }
                    _Q0QO0.autocomplete = !_Q0QO0.__keypress && !_Q0QO0.prefilled && !!_z$$2(_Q0QO0.__target).val();
                    if (!_z$$2(_Q0QO0.__target).is('[type="password"]')) {
                        var _IlLlL = _z$$2(_Q0QO0.__target).val();
                        if (!_IlLlL || !_IlLlL.length) {
                            return;
                        }
                        if (typeof _IlLlL === "object" && _IlLlL.length) {
                            _IlLlL = _IlLlL.sort().join(",");
                        }
                        _Q0QO0.checksum = _OQOO0.encodeHex(_OQOO0.crc32(_OQOO0.encodeUTF8(_IlLlL)));
                    } else {
                        _Q0QO0.checksum = null;
                    }
                });
            };
            return tart;
        });
        "use strict";
        page.when("fwcim-extend-prototype", "fwcim-input-telemetry").register("fwcim-captcha-telemetry", function (_ILiiLI, _00oQ0, _LLli) {
            var _$zZ$z = function (_LLLl, _Oo000, _L1lI) {
                this.__captchaRefreshLinks = _L1lI;
                this.refreshes = 0;

                _LLli.call(this, _LLLl, _Oo000);
            };
            _$zZ$z.prototype = _00oQ0(_LLli.prototype);
            _$zZ$z.prototype.constructor = _$zZ$z;
            _$zZ$z.prototype.__bind = function () {
                _LLli.prototype.__bind.apply(this, arguments);
                var _Iilil1 = this;
                var _oOoQQ = true;
                _ILiiLI(this.__target).on("focus", function () {
                    if (_oOoQQ === true) {
                        _Iilil1.__keypressIntervalTelemetry.reset();
                        _oOoQQ = false;
                    }
                });
                _ILiiLI(this.__captchaRefreshLinks).on("click", function () {
                    _Iilil1.refreshes++;
                });
            };
            return _$zZ$z;
        });
        "use strict";
        page.when("fwcim-zepto").register("fwcim-event-cycle-telemetry", function (_OOOOO) {
            var _OoQoO = function (_O0Ooo, _ssSs, _Z2sz, _IiL1L, _zzS2) {
                _Z2sz = _Z2sz || doc;
                _IiL1L = _IiL1L || 100;
                _zzS2 = _zzS2 || function () {
                };
                var _l11II1 = {};
                this.eventCycles = [];
                var _2sZzz = this;
                _OOOOO(_Z2sz).on(_O0Ooo, function (_00Q0o0) {
                    if (!_l11II1.hasOwnProperty(_00Q0o0.which)) {
                        _l11II1[_00Q0o0.which] = {
                            time: new Date().getTime(),
                            event: _00Q0o0
                        };
                    }
                }).on(_ssSs, function (_I1i1L) {
                    if (_l11II1.hasOwnProperty(_I1i1L.which)) {
                        if (_IiL1L < 0 || _2sZzz.eventCycles.length < _IiL1L) {
                            _2sZzz.eventCycles.push(new Date().getTime() - _l11II1[_I1i1L.which].time);
                        }

                        _zzS2(_l11II1[_I1i1L.which], {
                            time: new Date().getTime(),
                            event: _I1i1L
                        });
                        delete _l11II1[_I1i1L.which];
                    }
                });
            };
            return _OoQoO;
        });
        "use strict";
        page.when("fwcim-zepto").register("fwcim-keypress-interval-telemetry", function (_L1lI1) {
            var _lIllI = function (_$ZsSs, _Li1ll) {
                _Li1ll = _Li1ll || -1;
                var _i1iI = {};
                this.keyPressTimeIntervals = [];
                this.reset();
                var _I11L = this;
                _L1lI1(_$ZsSs).on("keydown", function (_1liI) {

                    if (!_i1iI.hasOwnProperty(_1liI.which) && (_Li1ll < 0 || _I11L.keyPressTimeIntervals.length < _Li1ll)) {
                        _i1iI[_1liI.which] = true;
                        var _ii1Ii = new Date().getTime();
                        _I11L.keyPressTimeIntervals.push(_ii1Ii - _I11L.__lastKeypressTimestamp);
                        _I11L.__lastKeypressTimestamp = _ii1Ii;
                    }
                }).on("keyup", function (_1LlI) {
                    if (_i1iI.hasOwnProperty(_1LlI.which)) {
                        delete _i1iI[_1LlI.which];
                    }
                });
            };
            _lIllI.prototype.reset = function () {
                this.__lastKeypressTimestamp = new Date().getTime();
            };
            return _lIllI;
        });
        page.when("fwcim-zepto", "fwcim-event-cycle-telemetry", "fwcim-throttle", "fwcim-json").register("fwcim-ciba", function (_O0OQoO, _Q0OOQO, _oOOOQ0, _1II1) {
            var _2$SS = 100;
            var _Zzsz = ["type", "time", "x", "y", "dx", "dy", "dz", "which"];
            var _lLIli = [8, 9, 16, 32, 33, 34, 35, 36, 37, 38, 39, 40];
            var _IiLi1 = function (_Il1li, _I1li) {
                this.__el = _Il1li || doc;
                this.__options = _O0OQoO.extend(true, {}, _I1li || {}, {
                    sampleRate: _2$SS
                });
                this.clear();
                this.__bindHandlers();
            };
            _IiLi1.SCROLL_EVENT = "s";
            _IiLi1.MOUSE_WHEEL_EVENT= "w";
            _IiLi1.MOUSE_EVENT ="m";
            _IiLi1.MOUSE_MOVE_EVENT = "mm";
            _IiLi1.KEY_EVENT = "k";
            _IiLi1.TOUCH_EVENT = "t";
            _IiLi1.VISIBILITY_CHANGE_EVENT = "v";
            _IiLi1.prototype.__bindHandlers= function () {
                this.__bindMouseScrollHandler();
                this.__bindMouseHandler();
                this.__bindTouchHandler();

                this.__bindKeyboardHandler();
                this.__bindVisibilityChangeHandler();
            };
            _IiLi1.prototype.__bindMouseScrollHandler = function () {
                var _LL1iI = this;
                _O0OQoO(this.__el).on("scroll", _oOOOQ0(function (_IIl11) {
                    var _IIl11 = {
                        type: _IiLi1.SCROLL_EVENT,
                        time: new Date().getTime() - _LL1iI.start,
                        x: _O0OQoO(wd).scrollLeft(),
                        y: _O0OQoO(wd).scrollTop()
                    };

                    _LL1iI.events.push(_IIl11);
                }, this.__options.sampleRate));
                _O0OQoO(this.__el).on("wheel", _oOOOQ0(function (_$Zz$Z) {
                    var _$Zz$Z = {
                        type: _IiLi1.MOUSE_WHEEL_EVENT,
                        time: new Date().getTime() - _LL1iI.start,
                        dx: _$Zz$Z.deltaX,
                        dy: _$Zz$Z.deltaY,
                        dz: _$Zz$Z.deltaZ
                    };
                    _LL1iI.events.push(_$Zz$Z);
                }, this.__options.sampleRate));
            };
            _IiLi1.prototype.__bindEventCycleTelemetry = function (_ILllL, _OQo0Q0Q, _11lL1, _QOo0O) {
                var self = this;
                new _Q0OOQO(_ILllL, _OQo0Q0Q, this__el, -1, function (_0o0Q, _$ZZ22) {
                    var _ssZ$ = {
                        startTime: _0o0Q.time - self.start,
                        time: _$ZZ22.time - self.start,
                        type: _11lL1
                    };
                    if (_0o0Q.pageX && _0o0Q.pageY) {
                        _ssZ$.x = _0o0Q.pageX;
                        _ssZ$.y = _0o0Q.pageY;
                    }
                    if (_QOo0O === _OQ || _$ZZ22.which && _QOo0O.indexOf(_$ZZ22.which) > -1) {
                        _ssZ$.which = _$ZZ22.which;
                    }
                    self.events.push(_ssZ$);
                });
            };
            _IiLi1.prototype.__bindMouseHandler = function () {
                var self = this;
                this.__bindEventCycleTelemetry("mousedown", "mouseup", _IiLi1.MOUSE_EVENT);
                _O0OQoO(this.__el).on("mousemove", _oOOOQ0(function (_QQ0Q0Q) {
                    var _QQ0Q0Q = {
                        time: new Date().getTime() - self.start,
                        type: _IiLi1.MOUSE_MOVE_EVENT,
                        x: _QQ0Q0Q.pageX,
                        y: _QQ0Q0Q.pageY
                    };
                    self.events.push(_QQ0Q0Q);
                }, this.__options.sampleRate));
            };
            _IiLi1.prototype.__bindTouchHandler = function () {
                this.__bindEventCycleTelemetry("touchstart", "touchend", _IiLi1.TOUCH_EVENT);
            };
            _IiLi1.prototype.__bindKeyboardHandler = function () {
                this.__bindEventCycleTelemetry("keydown", "keyup", _IiLi1.KEY_EVENT, _lLIli);
            };
            _IiLi1.prototype.__bindVisibilityChangeHandler = function () {
                var _$zzz = this;
                var _QoOQO, _liIl1L;
                if (typeof doc.hidden !== "undefined") {
                    _QoOQO = "hidden";
                    _liIl1L = "visibilitychange";
                } else if (typeof doc.msHidden !== "undefined") {
                    _QoOQO = "msHidden";

                    _liIl1L = "msvisibilitychange";
                } else if (typeof doc.webkitHidden !== "undefined") {

                    _QoOQO = "webkitHidden";
                    _liIl1L = "webkitvisibilitychange";
                }
                if (_liIl1L && typeof doc[_QoOQO] !== "undefined") {

                    _O0OQoO(doc).on(_liIl1L, function (_000QQO) {

                        var _Z2zSs = {
                            time: new Date().getTime() - _$zzz.start,
                            type: _IiLi1.VISIBILITY_CHANGE_EVENT,
                            visible: !doc[_QoOQO]
                        };
                        _$zzz.events.push(_Z2zSs);
                    });
                }
            };
            _IiLi1.prototype.serialize = function () {
                var _QOQQQO = [];
                _QOQQQO.push('"start":'+ this.start);
                var _OOOO0o = [];
                for (var _L1lL = 0; _L1lL < this.events.length; _L1lL++) {
                    var _LIi1l = this.events[_L1lL];
                    var _2$sZ = [];
                    for (var _SZss in _LIi1l) {

                        if (_LIi1l.hasOwnProperty(_SZss) && _Zzsz.indexOf(_SZss) > -1 && _LIi1l[_SZss] !== _OQ) {
                            _2$sZ.push('"' + _SZss + '":' + _1II1.stringify(_LIi1l[_SZss]));
                        }
                    }
                    _OOOO0o.push("{" + _2$sZ.join(",") + "}");
                }
                _QOQQQO.push('"events":[' + _OOOO0o.join(",") + "]");
                return "{" + _QOQQQO.join(",") + "}";
            };
            _IiLi1.prototype.clear = function () {
                this.start = new Date().getTime();

                this.events = [];
            };
            return _IiLi1;
        });
    }
}(window, document));